package mr

import "os"
import "strconv"

type ExampleArgs struct {
	X int
}

type ExampleReply struct {
	Y int
}

func coordinatorSock() string {
	s := "/var/tmp/824-mr-"
	s += strconv.Itoa(os.Getuid())
	return s
}

type TaskType int

const (
	// Mapper 表示任务是一个 Map 任务
	Mapper TaskType = iota
	// Reducer 表示任务是一个 Reduce 任务
	Reducer
	// Exit 表示所有 Map 和 Reduce 任务都已完成，Worker 应该退出
	Exit
	// Sleep 表示 Worker 应该休眠一段时间等待其他 Worker 完成任务
	Sleep
)

// Task 标识一个 Worker 将要进行的任务
type Task struct {
	Type      TaskType
	ID        int
	IsDone    bool
	InputFile string
	StartTime int64
	NReduce   int
}

type GetTaskArgs struct {
}

type GetTaskReply struct {
	Task *Task
}

type ReportDoneArgs struct {
	Task *Task
}

type ReportDoneReply struct {
}
